home *** CD-ROM | disk | FTP | other *** search
-
- /* ansi includes */
- #include <stdio.h>
- #include <stdlib.h>
-
- #define ELFBYTES_PER_ROW (20)
-
- int main( int ac, char **av )
- {
- int retval = EXIT_FAILURE;
- FILE *fh;
-
- /* Input file name given ? */
- if( ac == 2 )
- {
- /* Open ELF object file */
- if( fh = fopen( av[ 1 ], "rb" ) )
- {
- char buffer[ ELFBYTES_PER_ROW ];
- int nbytes;
-
- /* Write intro */
- printf( "\n"
- "/* ELF file %s embedded in C source */\n"
- "/* %s written by Roland Mainz, gisburn@w-specht.rhein-ruhr.de*/\n"
- "#include <stdlib.h>\n", av[ 1 ], av[ 0 ] );
-
- /* Write array introducer... */
- printf( "char elfobject[] = \n{\n" );
-
- /* Process object... */
- for( ; (nbytes = fread( buffer, 1, ELFBYTES_PER_ROW, fh )) > 0 ; )
- {
- int i;
-
- printf( " \"" );
-
- for( i = 0 ; i < nbytes ; i++ )
- {
- printf( "\\x%02.2X", (int)buffer[ i ] );
- }
-
- printf( "\"\n" );
- }
-
-
- if( !ferror( fh ) )
- {
- /* All done - write array terminator */
- printf( "};\n\nsize_t elfobject_size = sizeof( elfobject );\n\n" );
-
- retval = EXIT_SUCCESS;
- }
- else
- {
- fprintf( stderr, "ERROR !!!\n" );
- }
-
- (void)fclose( fh );
- }
- }
- else
- {
- /* Usage... */
- fprintf( stderr, "Usage: %s <elffile>\n", av[ 0 ] );
- }
-
- return( retval );
- }
-
-
-